using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using DomainModel;

namespace EntityFrameworkRepository
{
    public class SignalementRepository : ISignalementRepository
    {
        private readonly TechDays2012Db _context;

        public SignalementRepository()
        {
            _context = TechDays2012Db.Instance;            
        }

        public void Add(Signalement item)
        {
            _context.Signalements.Add(item);
        }

        public void Remove(int id)
        {
            throw new NotImplementedException();
        }

        public void Update(Signalement item)
        {
            //_context.Signalements.
        }

        public Signalement Find(int id)
        {
            return _context.Signalements.Find(id);
        }
        
        public  List<Signalement> FindAll ()
        {
            return _context.Signalements.Include("ObjetPatrimonial").Include("Panne").ToList();
        }

        public void SaveChanges()
        {
            _context.SaveChanges();
        }

        public List<Signalement> FindByVille(string ville)
        {
            return _context.Signalements.Where(s => s.ObjetPatrimonial.Town == ville).ToList();
        }

        public bool IsPanneAlreadyReported(int objetPatrimonialId, int panneId)
        {
            var q = from p in _context.Signalements
                    where p.ObjetPatrimonial.Id == objetPatrimonialId && p.Panne.Id == panneId && p.IsTerminated == false
                    select p;

            return q.Any();
        }
    }
}